package com.karry.util;

/*
*
* 用户账号，密码，邮箱合法性检测
* */

import java.io.File;
import java.io.IOException;

public class FieldCheckUtil {

    /*
    *
    * 账号  密码
    *
    * 要求: 1.长度 [6, 16]
    *      2.字符类型 [a, z] [A, Z] [0, 9]
    *
    * */
    private static final String nameRule = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    /*
     *
     * 邮箱
     *
     * 要求: 1.字符类型 [a, z] [A, Z] [0, 9] @ .
     *      2.必须含有 '@' '.' ,且@在.前，@不在最前.不在最后
     *      3.@只能有一个，.最多两个（我不确定）
     *
     * */
    private static final String emailRule = ".@0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";


    /**
     *
     * 账号密码合法性检测
     *
     * @param str   账号或者密码
     * @return      Boolean
     */
    public static boolean checkName(String str){
        //长度异常
        if (str == null || str.length() < 6 || str.length() > 16){
            System.out.println(1);
            return false;
        }

        char[] chars = str.toCharArray();
        for (char aChar : chars) {
            //字符异常
            if (nameRule.indexOf(aChar) < 0){
                System.out.println(2);
                return false;
            }
        }
        return true;
    }


    /**
     *
     * 邮箱合法性检测（弱）
     *
     * @param str   邮箱
     * @return      Boolean
     */
    public static boolean checkEmail(String str){
        //应该没有短于10位的email吧？
        if (str == null || str.length() < 10){
            System.out.println(3);
            return false;
        }

        //首先判断特殊字符
        int a = str.indexOf('@'), b = str.lastIndexOf('.'), len = str.length(), c = str.lastIndexOf('@'), d = str.indexOf('.');
        //@不在最前且只有一个，.不在最后，且@在所有的.之前
        if (a == c && a > 0 && a < len - 2 && a < d && b < len - 1){
            for (char c1 : str.toCharArray()) {
                //字符异常
                if (str.indexOf(c1) < 0){
                    System.out.println(4);
                    return false;
                }
            }
        }else {
            System.out.println("a:" + a + " b:" + b + " c:" + c + " d:" + d + " len:" + len);
            System.out.println(5);
            return false;
        }
        return true;

    }


    public static void main(String[] args) {
        //String str = "1664793090@qq.com";

        //System.out.println(checkEmail(str));

    }

    //未来考虑封锁境外IP地址，由于IP地址是动态的，所以考虑前端留一个IP数据库导入接口

}
